// 处理搜索的数据源 

import path from 'path'
import i18n from '@/i18n'


// [
//   {
//     "path": " /my", "title": [“个人中心"]
//   }, {
//     "path": "/user", "title": ["用户"]
  //   }
  // ]

  /**
   * 这里的routes参数 是我们当前的路由表 我们通过这个函数对他进行二次处理 
   * @param  routes  路由表
   * @param  basePath  基础路径 默认为/
   * @param  prefixTitle 
   */
    export const generateRoutes = (routes,basePath='/',prefixTitle= []) => {
      //创建一个空数组
      let result =[]

      //循环便利我们的路由表
      for(const item of routes){
        //创建一个包含title 和path的item
        const data = {
          //通过的node的path模块吧我们传递过来的path和当前每一项中的path路径进行合并
          path:path.resolve(basePath,item.path),
          title:[...prefixTitle]
        }

        //对当前的item进行处理 当前的item存在meta的时候 要使用i18n进行国际化解析处理,组合成新的title
        //动态路由不允许被检索
        //创建一个正则判断是不是动态路由  判断是不是包含:冒号 是就把他理解为动态路由
        const re =/.*\/:.*/
        //判断当前的item是否存在meta 并且meta里面存在title 并且正则匹配不到冒号
        if(item.meta && item.meta.title && !re.exec(item.path)){
          const i18nTitle = i18n.global.t(`msg.route.${item.meta.title}`)
          //合并 并重新赋值给data里面的title
          data.title = [...data.title,i18nTitle] 
          result.push(data)
        }
        //当前item纯在chldren字段时 需要再次处理  这里是处理子集
        if(item.children){
          //自己调用自己
         const tempRoutes = generateRoutes(item.children,data.path,data.title)
         if(tempRoutes.length>0){
          result = [...result,...tempRoutes]
         }
        }

      }

      return result
    }